/*
    ledApp控制程序
*/
#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
#include <string.h>

#define LED_TRIGGER "/sys/class/leds/sys-led/trigger"       //对应的开发板该目录下的属性文件，这个是触发
#define LED_BRIGHTNESS "/sys/class/leds/sys-led/brightness" //对应的开发板该目录下的属性文件，这个是亮度
//这个是打印提示信息，该程序的使用办法
#define USAGE() fprintf(stderr, "usage:\n" \                 
                                " %s <on|off>\n" \
                                " %s <trigger> <type>\n", argv[0], argv[0])

int main(int argc, char *argv[])
{
    int fd1, fd2;

    /* 校验传参 */
    if (2 > argc) {
    USAGE();
    exit(-1);
 }

  /* 打开文件-触发 */
 fd1 = open(LED_TRIGGER, O_RDWR);
 if (0 > fd1) {
    perror("open error");
    exit(-1);
 }

 /*打开文件-亮度*/
 fd2 = open(LED_BRIGHTNESS, O_RDWR);
 if (0 > fd2) {
    perror("open error");
    exit(-1);
 }

 /* 根据传参控制 LED ：
    1.传入"on"表示点亮 LED，先调用 write()将"none"写入到 trigger 属性文件中，也就是设置为无触发，
    接着再向 brightness 属性文件中写入"1"点亮 LED   
    2.传入"off"表示熄灭 LED，同样也是先调用 write()将"none"写入到 trigger 属性文件设置 LED 为无触发，
    接着再向brightness 属性文件中写入"0"熄灭 LED    */
 if (!strcmp(argv[1], "on")) {
    write(fd1, "none", 4); //先将触发模式设置为 none
    write(fd2, "1", 1); //点亮 LED
 }
 else if (!strcmp(argv[1], "off")) {
    write(fd1, "none", 4); //先将触发模式设置为 none
    write(fd2, "0", 1); //LED 灭
 }
 else if (!strcmp(argv[1], "trigger")) {
    if (3 != argc) {
    USAGE();
    exit(-1);
 }
 if (0 > write(fd1, argv[2], strlen(argv[2])))
    perror("write error");
 }
 else
    USAGE();
    exit(0);
}